package com.compasudea.polla.persistencia.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;

import com.compasudea.polla.negocio.dto.JugadorDTO;
import com.compasudea.polla.persistencia.Jugador;
import com.compasudea.polla.persistencia.dao.JugadorDAO;
import com.compasudea.polla.util.ConexionBD;
import com.compasudea.polla.util.ObjectPolla;

public class DatabaseJugadorDAO extends ObjectPolla implements JugadorDAO {
	HashMap<Integer,List<JugadorDTO>> jugadoresEquipo ;
	@Override
	public Collection<JugadorDTO> getAllJugadoresEquipo(int idEquipo) {
		
		return getJugadoresEquipo(idEquipo);
	}
	
	private Collection<JugadorDTO> getJugadoresEquipo(int idEquipo) {
		
		List<JugadorDTO> jugadores = new ArrayList<JugadorDTO>();
		JugadorDTO jugador;
		
		ConexionBD adminConexiones = new ConexionBD();
		Connection con = adminConexiones.getConexion();
	    PreparedStatement pstmt = null;
	    ResultSet rs = null;
		
		StringBuffer query = new StringBuffer("SELECT ID, EQUIPOS_ID_EQUIPO,NOMBRE,GOLES FROM Jugadores J");
		query.append(" WHERE J.Equipos_id_equipo = ?");
		
		   try {
			pstmt = con.prepareStatement(query.toString());
		
		   pstmt.setInt(1,idEquipo);
		   rs = pstmt.executeQuery();		
		
		   jugadores = new ArrayList<JugadorDTO>();
		   
		   while (rs.next()) {
			
				jugador = new JugadorDTO();
				jugador.setIdJugador(rs.getInt("ID"));
				jugador.setIdEquipo(rs.getInt("EQUIPOS_ID_EQUIPO"));	
				jugador.setNombre(rs.getString("NOMBRE"));
				jugador.setGoles(rs.getInt("GOLES"));
				jugadores.add(jugador);
				
			}

		   } catch (SQLException e) {
			   logger.equals(e);
			}

			
		
		return jugadores;
	}
	@Override
	public boolean actualizar(Jugador jugador) {
		
		boolean actualizo = false;	
		
		ConexionBD adminConexiones = new ConexionBD();
		Connection con = adminConexiones.getConexion();
	    PreparedStatement pstmt = null;
	   
	    
	    StringBuffer query = new StringBuffer("UPDATE Jugadores SET ");
	    query.append(" NOMBRE = ? ");
	    query.append(" , ");
	    query.append(" GOLES = ? ");
	    query.append(" WHERE ID = ? ");
	    query.append(" AND ");	    
	    query.append(" EQUIPOS_ID_EQUIPO = ? ");
	   
	   
	    try {
			pstmt = con.prepareStatement(query.toString());
	
	    
	    if(jugador.getNombre()!=null)
	    pstmt.setString(1, jugador.getNombre());
	    
	    if(jugador.getGoles()>=0 )
		 pstmt.setInt(2, jugador.getGoles());
	    
		pstmt.setInt(3, jugador.getIdJugador());
		pstmt.setInt(4, jugador.getIdEquipo());
		
		pstmt.executeUpdate();
	    
		} catch (SQLException e) {
			logger.error(e);
			actualizo=false;
		}
		
		return actualizo;
	}
	@Override
	public JugadorDTO getJugador(int idEquipo, int idJugador) {
		
		ConexionBD adminConexiones = new ConexionBD();
		Connection con = adminConexiones.getConexion();
	    PreparedStatement pstmt = null;
	    ResultSet rs = null;
	    JugadorDTO jugador = null;
		
		StringBuffer query = new StringBuffer("SELECT ID, EQUIPOS_ID_EQUIPO,NOMBRE,GOLES FROM Jugadores J");
		query.append(" WHERE J.EQUIPOS_ID_EQUIPO = ?");
		query.append(" AND ");
		query.append(" J.ID = ?");
		
		try {
			
		
		pstmt = con.prepareStatement(query.toString());
		
		pstmt.setInt(1, idEquipo);
		pstmt.setInt(2, idJugador);
		
		rs = pstmt.executeQuery();
		
		
		if(rs.next()){
			jugador = new JugadorDTO();
			jugador.setIdJugador(rs.getInt("ID"));
			jugador.setIdEquipo(rs.getInt("EQUIPOS_ID_EQUIPO"));	
			jugador.setNombre(rs.getString("NOMBRE"));
			jugador.setGoles(rs.getInt("GOLES"));
			
		
		}
		
		} catch (SQLException e) {
			logger.equals(e);
		}
		

		return jugador;
	}

}
